package unipe.p4.programacao3.model.livro;

import java.io.Serializable;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import org.hibernate.annotations.NamedQueries;
import org.hibernate.annotations.NamedQuery;

import unipe.p4.programacao3.model.pessoa.PessoaJuridica;

@Entity
@NamedQueries({
	@NamedQuery(
			name="Editora.findAll",
			query="SELECT o FROM Editora o"),
	@NamedQuery(
			name="Editora.count",
			query="SELECT COUNT(o) FROM Editora o"),
	@NamedQuery(
			name="Editora.findById",
			query="SELECT o FROM Editora o WHERE o.id=:id"),
	@NamedQuery(
			name="Editora.Livro.count",
			query="SELECT COUNT(o.livros) FROM Editora o WHERE o.id=:id"),
	@NamedQuery(
			name="Editora.Livro.findAll",
			query="SELECT o.livros FROM Editora o WHERE o.id=:id")
})
public class Editora implements Serializable {
	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue
	private Long id;
	@OneToOne(mappedBy="editora",cascade={CascadeType.PERSIST,CascadeType.REFRESH,
			CascadeType.MERGE,CascadeType.DETACH})
	private PessoaJuridica pessoaJuridica; 
	@OneToMany(mappedBy="editora",cascade={CascadeType.PERSIST,CascadeType.REFRESH,
			CascadeType.MERGE,CascadeType.DETACH})
	private List<Livro> livros;
		
	public Editora() {
		super();
	}
	
	public Editora(PessoaJuridica pessoaJuridica, List<Livro> livros) {
		super();
		this.pessoaJuridica = pessoaJuridica;
		this.livros = livros;
	}

	public Editora(PessoaJuridica pessoaJuridica) {
		super();
		this.pessoaJuridica = pessoaJuridica;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public PessoaJuridica getPessoaJuridica() {
		return pessoaJuridica;
	}

	public void setPessoaJuridica(PessoaJuridica pessoaJuridica) {
		this.pessoaJuridica = pessoaJuridica;
	}

	public List<Livro> getLivros() {
		return livros;
	}

	public void setLivros(List<Livro> livros) {
		this.livros = livros;
	}

	@Override
	public String toString() {
		return "Editora [id=" + id + ", nome=" + this.getPessoaJuridica().getNome() + "]";
	}

}
